package event

// optionArgs 定义用于配置 EventArgs 的函数类型
type optionArgs func(*EventArgs)

// SetEventArgsObj 设置事件参数中的 Obj 字段
func SetEventArgsObj(obj interface{}) optionArgs {
	return func(args *EventArgs) {
		args.Obj = obj
	}
}

// SetEventArgsTriggerObj 设置事件参数中的 TriggerObj 字段
func SetEventArgsTriggerObj(obj interface{}) optionArgs {
	return func(args *EventArgs) {
		args.TriggerObj = obj
	}
}

// SetEventArgsParams 设置事件参数中的 Params 字段
func SetEventArgsParams(params ...interface{}) optionArgs {
	return func(args *EventArgs) {
		args.Params = params
	}
}

// EventArgs 表示事件参数的结构体
type EventArgs struct {
	// 事件类型枚举
	EventType EventTypeEnum
	// 事件所在对象
	Obj interface{}
	// 触发事件的对象
	TriggerObj interface{}
	// 触发事件的额外参数
	Params []interface{}
}
